package com.wjq.boot.vo;

import com.wjq.boot.core.ResultCode;
import lombok.Getter;

/**
 * ClassName: com.wjq.boot.vo
 * Datetime: 2024/8/3 下午1:47
 * Description:
 *      统一返回值，工作中无论后端是否出错都必须向前端返回内容
 *      在这大部分公司会都会返回三份数据
 *      1.编码 2.内容 3.文字
 * @author 汪佳泉
 * @version 1.0
 * @since 1.0
 */
@Getter
public class ResultVo<T> {
    // 状态码
    private Integer code;
    // 主体内容，如查询数据
    private T content;
    // 请求信息，如 当前请求失败，请联系管理员 等
    private String message;

    public ResultVo(ResultCode code, T content, String message) {
        this.code = code.getValue();
        this.content = content;
        this.message = message;
    }

    public static <T> ResultVo<T> getInstance(ResultCode code,T content,String message){
        return new ResultVo<T>(code,content,message);
    }

    public static <T> ResultVo<T> success(T content,String message){
        return new ResultVo<T>(ResultCode.SUCCESS,content,message);
    }

    // 出错需要返回内容
    public static <T> ResultVo<T> failed(T content,String message){
        return new ResultVo<T>(ResultCode.FAILED,content,message);
    }

    // 出错但不需要返回内容，只需要返回信息
    public static <T> ResultVo<T> failed(String message){
        return failed(null,message);
    }

}
